# demo02_redis.py
import redis
# 创建Redis连接对象
r = redis.Redis(host='localhost', port=6379, db=0)
# 1.字符串
"""
# 设置
r.set('name', '小红')
# 获取
print(r.get('name'))
# 转为字符串
s = r.get('name')
print(s.decode('utf-8'))
# print(str(s, encoding='utf-8'))

# 如果不存在才会设置成功，否则存在不会设置
# r.setnx('name', 'Jerry')
# print(r.get('name').decode('utf-8'))
r.setnx('age', 22)
print(r.get('age'))

# 存储字符串，设置生命周期
r.setex('gender', 30, 'male')

# 2.哈希表(键值对集合)
# 设置
# r.hset('user', 'name', 'tom')
# r.hset('user', 'age', 20)
# 获取
# print(r.hget('user', 'name'), r.hget('user', 'age'))
# 获取所有
# {b'name': b'king', b'age': b'20', b'gender': b'female'}
user_dict = r.hgetall('user')
# 遍历字典，将字节串转为字符串
# {'name': 'king', 'age': '20', 'gender': 'female'}
def to_dict(user_dict):
    new_dict = {}
    for item in user_dict.items():
        key = item[0].decode('utf-8')
        value = item[1].decode('utf-8')
        # 添加到新字典
        new_dict[key] = value
    return new_dict
# print(to_dict(user_dict))
# print(to_dict({b'a': b'1', b'cc': b'2'}))
# 直接存储字典格式数据为哈希表
product = {'title': 'Mate70', 'price': 5999}
# r.hmset('phone', product)  # 不推荐，即将弃用的方法
for item in product.items():
    r.hset('phone', item[0], item[1])

# 获取多个
# [b'Mate70', b'5999']
# print(r.hmget('phone', 'title', 'price'))
# 删除1个
# r.hdel('phone', 'title')
# 删除所有,整个哈希表
# r.delete('phone')
# 判断是否存在
print(r.hexists('phone', 'title'))
print(r.hexists('user', 'name'))

# 获取所有的建
print(r.hkeys('user'))
# 获取所有的值
print(r.hvals('user'))
"""
# 设置生命周期
# r.expire('user', 20)



# 关闭
r.close()